package com.emm.yixun.system.service;
import java.util.HashMap;
import java.util.List;

import javax.jws.WebService;

import com.alibaba.fastjson.JSONArray;
import com.emm.yixun.common.app.BaseDataReqDto;
import com.emm.yixun.common.app.ProjectsPmoResDto;
import com.emm.yixun.common.model.BaseCodeValue;
import com.emm.yixun.common.model.BaseCodeValueInfo;
import com.emm.yixun.common.model.User;
import com.emm.yixun.common.model.dto.BaseCodeValueDto;
import com.emm.yixun.common.model.dto.ProjectDto;
import com.emm.yixun.common.page.Page;
import com.emm.yixun.common.response.Response;
import com.emm.yixun.common.response.ResponseList;
@WebService
public interface BaseCodeValueServiceFacade{
     	/**
	    *新增
	    */
		Response<BaseCodeValueDto> save(BaseCodeValueDto dto);
		
		/**
		*修改,当selective=true时修改非空列,当selective=false修改所有列
		*/
		Response<Integer> updateByPrimaryKey(BaseCodeValueDto dto,Boolean selective);
		
		/**
		 *逻辑删除
		 */
		Response<Integer> deleteByPrimaryKey(Long id);
		
		/**
		 *主键查询
		 */
		Response<BaseCodeValue> findById(Long id);
		
		/**
		 *根据dto查询记录
		 */
		ResponseList<BaseCodeValue> findByDto(BaseCodeValueDto dto);
		/**
		 *根据dto以及分页参数查询记录
		 */
		Page<BaseCodeValue> findPageByDto(BaseCodeValueDto dto,Integer begin,Integer row);
		/**
		 *根据dto查询记录
		 */
		ResponseList<BaseCodeValueDto> findListByTypeName(BaseCodeValueDto dto);
		
		/**
		 *根据dto查询记录
		 */
		ResponseList<BaseCodeValue> selectListFilterDelFlag(BaseCodeValueDto dto);
		
		/**
		 * 初始化客户参数
		 * @param user
		 * @param codeTypeArr
		 * @param codeTypeArr2
		 * @param codeValueArrs
		 * @return
		 */
		boolean baseCodeValueInit(User user, ProjectDto dto, String[] codeTypeArr, String[] codeTypeArr2, String[][] codeValueArrs, String codeType);
		
		/**
		* @Title: baseline 
		* @Description: 业态基线
		* @param @param baseDataReqDtos
		* @param @return    设定文件 
		* @return ProjectsPmoResDto    返回类型 
		* @throws
		 */
		ProjectsPmoResDto baseline(List<BaseDataReqDto> baseDataReqDtos,String interfaceName);
		
		/**
		*
		* @Title: propertyFormsInvalid 
		* @Description: 下线接口
		* @param @param map
		* @param @return    设定文件 
		* @return ProjectsPmoResDto    返回类型 
		* @throws
		 */
		ProjectsPmoResDto propertyFormsInvalid(HashMap<String, Object> map);
		
		/**
		 *查询最后修改人和时间
		 */
		Response<BaseCodeValue> lastUpdateTime(BaseCodeValueDto dto);
		
		/**
		 *查询选项及选择数量
		 */
		ResponseList<BaseCodeValueInfo> getOptionRatio(BaseCodeValueInfo dto, String num);
		
		/**
		 *查询选项及选择数量
		 */
		ResponseList<BaseCodeValueInfo> getOptionRatioByEnum(BaseCodeValueInfo dto, String num, String codeName);
		
		/**
		 *查询选项及选择数量
		 */
		ResponseList<BaseCodeValueInfo> getDocumentTypeRatio(BaseCodeValueInfo dto, String num);

		String getBcvJsonArray(BaseCodeValueDto bcvDto);
}
